/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.gfids.trivial.model.servidor;

import org.gfids.trivial.model.Cuestion;
import org.gfids.util.HibernateUtil;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

/**
 *
 * @author luischo
 */
public class BaseDeDatos {

    private final String CONSULTA_LISTAR_CUESTIONES = "FROM Trivial";

    /**
     * Guarda una nueva Cuestion en la base de datos
     * 
     * @param c La Cuestion a guardar
     */
    public void guardarCuestion(Cuestion c) {
        Session sesion = HibernateUtil.getSessionFactory().openSession();
        Transaction t = sesion.beginTransaction();
        sesion.save(c);
        t.commit();
        sesion.close();
    }

    /**
     * Actualiza una Cuestion de la base de datos por la que se le pasa en el metodo
     * 
     * @param c Cuestion a actualizar
     */
    public void actualizarCuestion(Cuestion c) {
        Session sesion = HibernateUtil.getSessionFactory().openSession();
        Transaction t = sesion.beginTransaction();
        sesion.update(c);
        t.commit();
        sesion.close();
    }

    /**
     * Borra una Cuestion de la base de datos
     * 
     * @param indice El indice de la Cuestion a borrar, sólo el indice
     */
    public void borrarCuestion(long indice) {
        Session sesion = HibernateUtil.getSessionFactory().openSession();
        Transaction t = sesion.beginTransaction();
        Cuestion c = new Cuestion();
        c.setId(indice);
        sesion.delete(c);
        t.commit();
        sesion.close();
    }

    /**
     * Devuelve un List<Cuestion> de los Cuestion que hay en la base de datos
     * 
     * @return Devuelve una lista con las Cuestion
     */
    @SuppressWarnings("unchecked")
	public List<Cuestion> listaCuestions() {
        Session s = HibernateUtil.getSessionFactory().openSession();
        Query query = s.createQuery(this.CONSULTA_LISTAR_CUESTIONES);
        List<Cuestion> trivials = (List<Cuestion>) query.list();
        s.close();
        List<Cuestion> cuestions = new ArrayList<Cuestion>();
        for (Cuestion t : trivials) {
            cuestions.add(t);
        }
        return cuestions;
    }

    /**
     * Devuelve una Cuestion
     * 
     * @return Devuelve una Cuestion
     */
    public Cuestion getCuestion(int idCuestion) {
        Session s = HibernateUtil.getSessionFactory().openSession();
        Cuestion c = (Cuestion) s.get(Cuestion.class, idCuestion);
        s.close();
        return c;
    }
}
